Skip to content

chore: search prep and breakpoint shift#28

Merged
michellepace merged 12 commits intomainfrom
chore/search-prep-and-breakpoint-shift
Jan 5, 2026
Merged

chore: search prep and breakpoint shift#28
michellepace merged 12 commits intomainfrom
chore/search-prep-and-breakpoint-shift

Conversation

@michellepace
Copy link
Owner

Summary

  • URL restructuring: Renamed /question/[id]/questions/[id] and /ask-question/questions/ask for better REST semantics
  • Breakpoint shift: Changed mobile/desktop breakpoint from sm (640px) to md (768px) for improved tablet handling
  • Search infrastructure: Added shadcn/ui command, dialog, and popover components with cmdk package in preparation for Stack Overflow-style searchbox
  • UI refinements: Increased top bar height, adjusted spacing, and enlarged mobile nav icons

Test plan

  • E2E tests updated and passing (17 tests)
  • Build succeeds with no TypeScript errors
  • Manual verification of responsive breakpoints on various devices
  • Verify question links work with new /questions/ URL structure

🤖 Generated with Claude Code

michellepace and others added 12 commits January 5, 2026 10:04
- Scale padding progressively: 24px → 32px (sm) → 40px (md) → 56px (lg)

Provides smoother visual transitions across viewport sizes and restores appropriate
breathing room on mobile devices.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Claude Configuration:
- Enable code-review and pr-review-toolkit plugins
- Reformat deny array to multi-line for consistency

Adds review tooling for code quality checks and PR analysis workflows.
Configuration:

- Add shadcn MCP server to `.mcp.json` for AI-assisted component browsing
- Install `shadcn` CLI as devDependency for faster MCP server startup

Enables natural language interaction with shadcn/ui registry from Claude Code,
allowing component search, browsing, and installation via conversational prompts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Routes:

- Rename /question/[id] to /questions/[id]
- Rename /ask-question to /questions/ask
- Shorten nav label to "Ask Question"

Links & Tests:

- Update hrefs in question-card and question-link components
- Update E2E selectors and URL assertions

Groups question-related routes under a common /questions prefix for REST-style
consistency. All internal links and tests updated accordingly.
Search Component:
- Rename global-search.tsx to searchbox.tsx
- Rename GlobalSearch export to Searchbox
- Update import and usage in desktop-topbar.tsx

Simpler naming since there is only one search component in the application.
The term "searchbox" is an established UI pattern name.
Notes:
- Documents distinction between up_vote_count, down_vote_count, and score
- Explains score as net result (upvotes minus downvotes)
- Includes data model proposal for DevFlow questions and answers

Reference material for implementing voting functionality with per-post score tracking
and efficient query support.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Documents current layout structure including route groups, responsive breakpoints,
mobile-first patterns, and remaining implementation tasks.

Provides context for continuing homepage development with search and filter features.
Components:

- Command with dialog variant, input, list, groups and items
- Dialog with overlay, header/footer, title/description
- Popover with trigger, content and anchor

Dependencies:

- cmdk for command palette functionality
- @radix-ui/react-popover for popover primitives

Adds building blocks for searchbox feature. Formatted with Biome to match
project standards.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Renames x_docs/OLD to x_docs/DONE in the file access deny list.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Specification:

- Define Stack Overflow-style search combobox requirements
- Document 6 search operators with descriptions
- Specify responsive behaviour (mobile icon, desktop input, lg: two-column)
- Architecture: shadcn Popover + Command with shouldFilter={false}
- Include accessibility patterns and success criteria

Based on Playwright validation of stackoverflow.com/questions search component.
Prepared for feature-dev plugin workflow.
Navigation:
- Change visibility breakpoint from sm (640px) to md (768px)
- Update mobile-topbar, desktop-topbar, mobile-nav, and sidebar components

Layout:
- Shift main content padding progression up one breakpoint tier
- Update useMobile hook threshold from 640 to 768

Tests:
- Update e2e viewport comments and SM preset height

Extends mobile view to include tablet-sized screens (640-767px), providing a
better touch-friendly experience on smaller tablets. Desktop layout with
sidebar now activates at 768px and above.
- Increase top bar height from 4rem to 5rem
- Adjust content padding progression (px-4 md:px-8 lg:px-10 xl:px-14)
- Update desktop topbar padding to match content alignment
- Refine mobile nav: narrower drawer (280px), larger icons, adjusted padding
- Increase mobile topbar logo size
- Reduce mobile navlink horizontal padding

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@vercel
Copy link

vercel bot commented Jan 5, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
devflow Ready Ready Preview, Comment Jan 5, 2026 9:57pm

@coderabbitai
Copy link

coderabbitai bot commented Jan 5, 2026

Summary by CodeRabbit

Release Notes

  • New Features

    • Introduced a new Searchbox component with Command Palette UI for enhanced search experience.
    • Enabled code-review and pr-review-toolkit plugins for improved development workflows.
    • Added shadcn MCP server integration.
  • Style

    • Refined responsive breakpoints across desktop and mobile layouts for better visual consistency.
    • Increased top navigation bar height to 5rem.
    • Enhanced button and icon sizes for improved usability.
    • Adjusted horizontal padding and spacing throughout the interface.
  • Documentation

    • Added comprehensive homepage architecture documentation.
    • Documented searchbox feature specification and vote scoring system.

✏️ Tip: You can customize this high-level summary in your review settings.

Walkthrough

This PR enhances responsive navigation and search infrastructure by shifting the mobile breakpoint threshold from 640px to 768px, updating routing conventions for question links, introducing shadcn/ui primitives (Command, Dialog, Popover), and replacing a placeholder GlobalSearch component with a new Searchbox stub. Layout padding is adjusted across components, and new documentation captures homepage architecture and searchbox specifications.

Changes

Cohort / File(s) Summary
Configuration & Dependencies
.claude/settings.json, .mcp.json, package.json
Added "shadcn" MCP server, enabled code-review and pr-review-toolkit plugins, updated deny policy from x_docs/OLD/** to x_docs/DONE/**, and added @radix-ui/react-popover, cmdk, and shadcn dependencies.
Mobile Breakpoint Hook
hooks/use-mobile.ts, e2e/viewports.ts
Changed MOBILE_BREAKPOINT from 640px (sm) to 768px (md), affecting mobile state detection. Updated viewport comments to reflect new threshold semantics.
Navigation Components (Breakpoint & Padding Updates)
components/navigation/desktop-topbar.tsx, components/navigation/mobile-topbar.tsx, components/navigation/mobile-nav.tsx, components/navigation/mobile-navlink.tsx, components/ui/sidebar.tsx
Shifted visibility and flex breakpoints from sm to md; adjusted horizontal padding across responsive breakpoints; reduced mobile nav max-width from 320px to 280px; increased icon and logo sizes; changed SheetContent padding from p-6 to px-4 py-6.
Navigation Links & Routing
components/navigation/nav-links.constants.ts, components/question-card.tsx, components/right-sidebar/question-link.tsx
Updated navigation link route from /ask-question to /questions/ask and label to "Ask Question"; changed question card and question link hrefs from /question/{id} to /questions/{id}.
Layout & Global Styling
app/(app)/layout.tsx, app/globals.css
Updated main content container padding from px-10 lg:px-14 to px-4 md:px-8 lg:px-10 xl:px-14; increased CSS variable --top-bar-height from 4rem to 5rem.
Search Component Refactor
components/search/global-search.tsx (removed), components/search/searchbox.tsx (added), components/navigation/desktop-topbar.tsx
Replaced GlobalSearch placeholder with Searchbox stub component; updated import in desktop-topbar.
New UI Primitives (shadcn/ui Wrappers)
components/ui/command.tsx, components/ui/dialog.tsx, components/ui/popover.tsx
Added composable Command Palette components (Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut); added Dialog components (Dialog, DialogTrigger, DialogOverlay, DialogContent, DialogHeader, DialogTitle, DialogDescription); added Popover components (Popover, PopoverTrigger, PopoverContent, PopoverAnchor). All wrap Radix UI primitives with consistent styling and data-slot attributes.
Testing
e2e/right-sidebar.desktop.spec.ts
Updated question link selector and URL assertion from /question/ to /questions/ pattern.
Documentation
x_docs/my_notes/homepage.md, x_docs/my_notes/searchbox.md, x_docs/my_notes/votes_scores.md
Added homepage architecture documentation, comprehensive searchbox feature specification (Stack Overflow–style search with Popover + Command pattern), and votes/scores data model documentation.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐰 The breakpoints shift from small to medium's call,
Navigation flows, more graceful through it all.
New UI commands and popovers take their place,
A searchbox blooms in responsive space.
Routes redirected, from question to questions they say—
DevFlow's responsive dance, refined today! 🎨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 9.09% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarises the main changes: search infrastructure preparation and breakpoint shift from sm to md.
Description check ✅ Passed The description is directly related to the changeset, providing detailed summaries of URL restructuring, breakpoint shifts, search infrastructure additions, and UI refinements that match the file changes.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/search-prep-and-breakpoint-shift

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Fix all issues with AI Agents 🤖
In @x_docs/my_notes/homepage.md:
- Line 27: The docs still reference the old GlobalSearch component and the 640px
(sm) breakpoint; update every mention of GlobalSearch to Searchbox (occurrences
around lines 27, 60, 86, 113, 202, 228) and adjust the breakpoint table/text
(lines ~122–126) to use 768px/md as the mobile/desktop split: change "< 640px
(mobile)" to "< 768px (mobile)", update the "640px+ (sm)" description to state
the desktop sidebar appears at md (768px+), and revise the "sm:hidden" mention
(around line 56) to reflect the md-based hide/show behavior.

In @x_docs/my_notes/votes_scores.md:
- Line 31: Replace the internal-only help link on the line containing
"[Reputation and Voting - Stack Overflow Help]" by removing the
`https://internal.stackoverflow.help/...` URL and either deleting the link
entirely or replacing it with the public help page
`https://stackoverflow.com/help/reputation`; update the markdown so the visible
text remains appropriate (e.g., "Reputation and Voting - Stack Overflow Help"
linking to `https://stackoverflow.com/help/reputation`) to avoid referencing
internal-only resources.
📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3b8a7ba and a01cb5a.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (26)
  • .claude/settings.json
  • .mcp.json
  • app/(app)/layout.tsx
  • app/(app)/questions/[id]/page.tsx
  • app/(app)/questions/ask/page.tsx
  • app/globals.css
  • components/navigation/desktop-topbar.tsx
  • components/navigation/mobile-nav.tsx
  • components/navigation/mobile-navlink.tsx
  • components/navigation/mobile-topbar.tsx
  • components/navigation/nav-links.constants.ts
  • components/question-card.tsx
  • components/right-sidebar/question-link.tsx
  • components/search/global-search.tsx
  • components/search/searchbox.tsx
  • components/ui/command.tsx
  • components/ui/dialog.tsx
  • components/ui/popover.tsx
  • components/ui/sidebar.tsx
  • e2e/right-sidebar.desktop.spec.ts
  • e2e/viewports.ts
  • hooks/use-mobile.ts
  • package.json
  • x_docs/my_notes/homepage.md
  • x_docs/my_notes/searchbox.md
  • x_docs/my_notes/votes_scores.md
💤 Files with no reviewable changes (1)
  • components/search/global-search.tsx
🧰 Additional context used
📓 Path-based instructions (4)
**/*.css

📄 CodeRabbit inference engine (CLAUDE.md)

Tailwind CSS v4: Use @import "tailwindcss" syntax instead of @tailwind directives

Files:

  • app/globals.css
**/*.{ts,tsx,js,jsx,md}

📄 CodeRabbit inference engine (CLAUDE.md)

Use British English throughout the codebase (comments, strings, documentation)

Files:

  • components/right-sidebar/question-link.tsx
  • x_docs/my_notes/votes_scores.md
  • components/navigation/mobile-topbar.tsx
  • components/ui/sidebar.tsx
  • components/navigation/mobile-nav.tsx
  • e2e/viewports.ts
  • x_docs/my_notes/searchbox.md
  • components/navigation/mobile-navlink.tsx
  • x_docs/my_notes/homepage.md
  • components/ui/command.tsx
  • components/navigation/nav-links.constants.ts
  • components/search/searchbox.tsx
  • e2e/right-sidebar.desktop.spec.ts
  • components/question-card.tsx
  • components/ui/popover.tsx
  • components/navigation/desktop-topbar.tsx
  • hooks/use-mobile.ts
  • components/ui/dialog.tsx
  • app/(app)/layout.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

**/*.{ts,tsx}: Only add "use client" directive when interactivity is needed
Avoid manual useMemo/useCallback unless profiling shows need

Files:

  • components/right-sidebar/question-link.tsx
  • components/navigation/mobile-topbar.tsx
  • components/ui/sidebar.tsx
  • components/navigation/mobile-nav.tsx
  • e2e/viewports.ts
  • components/navigation/mobile-navlink.tsx
  • components/ui/command.tsx
  • components/navigation/nav-links.constants.ts
  • components/search/searchbox.tsx
  • e2e/right-sidebar.desktop.spec.ts
  • components/question-card.tsx
  • components/ui/popover.tsx
  • components/navigation/desktop-topbar.tsx
  • hooks/use-mobile.ts
  • components/ui/dialog.tsx
  • app/(app)/layout.tsx
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Always use @/ import aliases, even for sibling files (use @/app/fonts instead of ./fonts)

Files:

  • components/right-sidebar/question-link.tsx
  • components/navigation/mobile-topbar.tsx
  • components/ui/sidebar.tsx
  • components/navigation/mobile-nav.tsx
  • e2e/viewports.ts
  • components/navigation/mobile-navlink.tsx
  • components/ui/command.tsx
  • components/navigation/nav-links.constants.ts
  • components/search/searchbox.tsx
  • e2e/right-sidebar.desktop.spec.ts
  • components/question-card.tsx
  • components/ui/popover.tsx
  • components/navigation/desktop-topbar.tsx
  • hooks/use-mobile.ts
  • components/ui/dialog.tsx
  • app/(app)/layout.tsx
🧠 Learnings (14)
📚 Learning: 2025-12-30T21:09:31.840Z
Learnt from: michellepace
Repo: michellepace/devflow PR: 23
File: app/globals.css:131-135
Timestamp: 2025-12-30T21:09:31.840Z
Learning: In CSS theme files, duplicating variable declarations in :root and .dark blocks is intentional to keep a parallel structure for readability and future maintenance. This pattern improves quick visual comparison and simplifies adding new themes. If you duplicate, ensure both blocks have identical values for the variables that are shared; consider centralizing truly shared tokens later only if maintenance burden grows.

Applied to files:

  • app/globals.css
📚 Learning: 2025-12-28T22:41:43.692Z
Learnt from: CR
Repo: michellepace/devflow PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-28T22:41:43.692Z
Learning: Applies to **/*.css : Tailwind CSS v4: Use import "tailwindcss" syntax instead of tailwind directives

Applied to files:

  • app/globals.css
📚 Learning: 2025-12-25T15:46:14.812Z
Learnt from: michellepace
Repo: michellepace/devflow PR: 18
File: lib/utils.ts:17-19
Timestamp: 2025-12-25T15:46:14.812Z
Learning: In Tailwind CSS v4, the shorthand syntax `bg-(image:--gradient-primary)` with parentheses is valid and equivalent to the traditional bracket syntax `bg-[image:var(--gradient-primary)]`. The project michellepace/devflow has standardized on using the v4 shorthand syntax with parentheses for CSS variable references.

Applied to files:

  • app/globals.css
📚 Learning: 2025-12-10T20:20:46.607Z
Learnt from: michellepace
Repo: michellepace/devflow PR: 7
File: components/navigation/navbar/index.tsx:1-12
Timestamp: 2025-12-10T20:20:46.607Z
Learning: Clerk's Next.js components (SignedIn, SignedOut, SignInButton, SignUpButton, UserButton) from clerk/nextjs can be used inside Server Components without adding 'use client' in the consuming component. They manage client/server boundary internally. When reviewing code, prefer omitting 'use client' in server components that render these Clerk components and avoid introducing client directives solely for these components. This guideline helps maintain server/server boundary and reduce client bundle size.

Applied to files:

  • components/right-sidebar/question-link.tsx
  • components/navigation/mobile-topbar.tsx
  • components/ui/sidebar.tsx
  • components/navigation/mobile-nav.tsx
  • components/navigation/mobile-navlink.tsx
  • components/ui/command.tsx
  • components/search/searchbox.tsx
  • components/question-card.tsx
  • components/ui/popover.tsx
  • components/navigation/desktop-topbar.tsx
  • components/ui/dialog.tsx
  • app/(app)/layout.tsx
📚 Learning: 2026-01-04T14:21:37.960Z
Learnt from: michellepace
Repo: michellepace/devflow PR: 27
File: components/question-card.tsx:1-1
Timestamp: 2026-01-04T14:21:37.960Z
Learning: If a React component renders relative time by calling new Date() during render (e.g., via a getRelativeTime utility), add the 'use client' directive to the component to avoid hydration mismatches between server and client. This guideline applies to components that rely on client-side timestamps; if server-rendered data is required, consider moving time computations to the client side or memoizing/separating the logic.

Applied to files:

  • components/right-sidebar/question-link.tsx
  • components/navigation/mobile-topbar.tsx
  • components/ui/sidebar.tsx
  • components/navigation/mobile-nav.tsx
  • components/navigation/mobile-navlink.tsx
  • components/ui/command.tsx
  • components/search/searchbox.tsx
  • components/question-card.tsx
  • components/ui/popover.tsx
  • components/navigation/desktop-topbar.tsx
  • components/ui/dialog.tsx
📚 Learning: 2025-12-25T13:56:02.914Z
Learnt from: michellepace
Repo: michellepace/devflow PR: 18
File: components/navigation/content-top-bar.tsx:23-30
Timestamp: 2025-12-25T13:56:02.914Z
Learning: In a Grok-style layout, move authenticated user controls (Clerk's UserButton) out of the top navigation and into the sidebar footer (e.g., components/app-sidebar.tsx). Ensure components/navigation/content-top-bar.tsx only renders SignedOut options (Sign in/Sign up). Apply this guideline to all TSX files under components/navigation to enforce consistent placement of authentication UI across the navigation layer.

Applied to files:

  • components/navigation/mobile-topbar.tsx
  • components/navigation/mobile-nav.tsx
  • components/navigation/mobile-navlink.tsx
  • components/navigation/desktop-topbar.tsx
📚 Learning: 2026-01-01T17:53:39.701Z
Learnt from: michellepace
Repo: michellepace/devflow PR: 24
File: components/ui/badge.tsx:7-26
Timestamp: 2026-01-01T17:53:39.701Z
Learning: For files generated by npx shadcnlatest add <component> placed under components/ui/, do not refactor styling for readability (e.g., splitting long className strings). Follow upstream shadcn/ui conventions to keep diffs minimal and future updates straightforward. If a change is necessary for functionality, document it but avoid changing existing className formatting to preserve diffs.

Applied to files:

  • components/ui/sidebar.tsx
  • components/ui/command.tsx
  • components/ui/popover.tsx
  • components/ui/dialog.tsx
📚 Learning: 2025-12-10T20:20:54.402Z
Learnt from: michellepace
Repo: michellepace/devflow PR: 7
File: components/navigation/navbar/index.tsx:1-12
Timestamp: 2025-12-10T20:20:54.402Z
Learning: Clerk's Next.js components (SignedIn, SignedOut, SignInButton, SignUpButton, UserButton) exported from clerk/nextjs are designed to work in Server Components without requiring a "use client" directive in the consuming component, as they handle the client/server boundary internally with their own directives.

Applied to files:

  • package.json
📚 Learning: 2025-12-28T22:41:43.692Z
Learnt from: CR
Repo: michellepace/devflow PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-28T22:41:43.692Z
Learning: Applies to components/clerk-provider.tsx : ClerkProvider should be implemented in components/clerk-provider.tsx and apply shadcn theme and Inter font

Applied to files:

  • package.json
  • components/navigation/desktop-topbar.tsx
📚 Learning: 2025-12-28T22:41:43.692Z
Learnt from: CR
Repo: michellepace/devflow PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-28T22:41:43.692Z
Learning: Use Lefthook for Git hooks with pre-commit (lint, typecheck, unit tests) and pre-push (E2E tests) workflows

Applied to files:

  • package.json
📚 Learning: 2026-01-01T18:42:30.416Z
Learnt from: michellepace
Repo: michellepace/devflow PR: 24
File: lib/data/questions.ts:23-23
Timestamp: 2026-01-01T18:42:30.416Z
Learning: In the devflow project, mock data (such as question titles in lib/data/questions.ts) intentionally includes grammatical errors, capitalisation inconsistencies, and informal language to reflect realistic user input for testing purposes.

Applied to files:

  • x_docs/my_notes/homepage.md
📚 Learning: 2025-12-25T13:56:09.644Z
Learnt from: michellepace
Repo: michellepace/devflow PR: 18
File: components/navigation/content-top-bar.tsx:23-30
Timestamp: 2025-12-25T13:56:09.644Z
Learning: In the Grok-style layout for this project, authenticated user account controls (Clerk's UserButton) are placed in the sidebar footer (components/app-sidebar.tsx), not in the content top bar (components/navigation/content-top-bar.tsx). The content top bar only displays SignedOut authentication options (Sign in/Sign up buttons).

Applied to files:

  • x_docs/my_notes/homepage.md
📚 Learning: 2025-12-28T22:41:43.692Z
Learnt from: CR
Repo: michellepace/devflow PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-28T22:41:43.692Z
Learning: Applies to components/auth/clerk-signin.tsx : Sign In component (components/auth/clerk-signin.tsx) should be a client component with theme-aware logo

Applied to files:

  • components/navigation/desktop-topbar.tsx
📚 Learning: 2025-12-28T22:41:43.692Z
Learnt from: CR
Repo: michellepace/devflow PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-28T22:41:43.692Z
Learning: Applies to components/auth/clerk-signup.tsx : Sign Up component (components/auth/clerk-signup.tsx) should use a static logo

Applied to files:

  • components/navigation/desktop-topbar.tsx
🧬 Code graph analysis (4)
components/navigation/mobile-nav.tsx (3)
components/ui/button.tsx (1)
  • Button (64-64)
lib/utils.ts (1)
  • cn (4-6)
components/navigation/themed-full-logo.tsx (1)
  • ThemedFullLogo (15-27)
components/ui/command.tsx (2)
lib/utils.ts (1)
  • cn (4-6)
components/ui/dialog.tsx (5)
  • Dialog (133-133)
  • DialogHeader (138-138)
  • DialogTitle (141-141)
  • DialogDescription (136-136)
  • DialogContent (135-135)
components/ui/popover.tsx (1)
lib/utils.ts (1)
  • cn (4-6)
components/ui/dialog.tsx (1)
lib/utils.ts (1)
  • cn (4-6)
🪛 LanguageTool
x_docs/my_notes/searchbox.md

[duplication] ~135-~135: Possible typo: you repeated a word.
Context: ...ap search icon → Sheet slides down with Searchbox 3. Searchbox opens with dropdown visible 4. Submit o...

(ENGLISH_WORD_REPEAT_RULE)

x_docs/my_notes/homepage.md

[uncategorized] ~11-~11: It seems likely that a singular genitive (’s) apostrophe is missing.
Context: ...tion button, local search input, filter chips - Global search placeholder added to de...

(AI_HYDRA_LEO_APOSTROPHE_S_XS)


[style] ~188-~188: Would you like to use the Oxford spelling “organization”? The spelling ‘organisation’ is also correct.
Context: ...ntegration | Clerk in top bars | | Code organisation | Separate mobile/desktop bars | | Data...

(OXFORD_SPELLING_Z_NOT_S)

🔇 Additional comments (35)
.claude/settings.json (2)

83-85: LGTM! Plugin additions align with PR objectives.

The addition of code-review@claude-plugins-official and pr-review-toolkit@claude-plugins-official correctly implements the code-review tooling mentioned in the PR objectives. Both plugins are from the official Claude plugins repository and are appropriate for enhancing the development workflow.


74-74: Directory rename successfully completed.

The directory has been properly renamed from x_docs/OLD/ to x_docs/DONE/, the deny policy in .claude/settings.json correctly reflects this change, and there are no remaining references to the old directory in the codebase.

components/question-card.tsx (1)

25-25: LGTM! Routing change consistent with project-wide update.

The href update from /question/${question._id} to /questions/${question._id} correctly mirrors the routing convention change applied across all question navigation points.

e2e/right-sidebar.desktop.spec.ts (2)

18-18: LGTM! Test selector updated for new routing pattern.

The selector correctly targets links using the new /questions/ route prefix, ensuring the test continues to locate question links in the right sidebar.


39-39: LGTM! URL assertion updated for new routing pattern.

The regex pattern correctly validates that clicking a question link navigates to the new /questions/{id} format, maintaining test coverage for the updated routing behaviour.

.mcp.json (1)

8-11: LGTM! MCP configuration aligns with dependency additions.

The shadcn MCP server configuration correctly enables CLI tooling integration, consistent with the shadcn devDependency added in package.json. The configuration follows the same pattern as the existing playwright MCP entry.

package.json (3)

63-63: Version 3.6.2 is valid and currently the latest release.

The shadcn CLI is correctly added to devDependencies. Version ^3.6.2 exists on npm and aligns with the MCP configuration and shadcn/ui component additions.


29-29: Version is valid and secure—no action required.

The @radix-ui/react-popover@^1.1.15 dependency is available on npm and represents the latest stable version. No security vulnerabilities were detected.


37-37: The cmdk dependency at version 1.1.1 is valid and has no known security vulnerabilities.

The specified version exists on npm and is actively maintained with no reported security advisories. Dependencies are from the trusted @radix-ui ecosystem. Dependency addition is safe to proceed.

components/right-sidebar/question-link.tsx (1)

12-12: LGTM! Routing change verified and consistent.

The change from /question/${id} to /questions/${id} is correctly implemented across the codebase. Verification confirms no active code references to the old singular route remain; only historical documentation in the handover folder references the previous structure, which is expected and acceptable.

components/search/searchbox.tsx (1)

1-5: LGTM – Placeholder component for search infrastructure.

This stub component correctly omits the 'use client' directive since it contains no interactivity. The TODO comment clearly signals the next implementation step.

components/ui/sidebar.tsx (1)

219-219: LGTM – Breakpoint shift aligns with PR objectives.

The changes from sm to md breakpoints correctly implement the mobile threshold shift from 640px to 768px, ensuring the sidebar and rail controls render consistently at the medium breakpoint and above.

Also applies to: 246-246, 308-308

hooks/use-mobile.ts (1)

3-3: LGTM – Core breakpoint update drives mobile/desktop behaviour.

The shift to 768px (md breakpoint) correctly updates the mobile detection threshold, ensuring consistency with the responsive layout changes throughout the codebase.

e2e/viewports.ts (1)

13-20: LGTM – Viewport definitions align with the md breakpoint shift.

The updated comments and the SM viewport height change to MOBILE_HEIGHT correctly reflect the new mental model where 640–767px is treated as tablet-sized mobile rather than desktop, ensuring test viewports match the application's responsive behaviour.

x_docs/my_notes/searchbox.md (1)

1-190: LGTM! Comprehensive feature specification.

The documentation is well-structured and provides clear guidance for implementing the Searchbox component. The architecture decision to use Popover + Command with shouldFilter={false} is sound, and the responsive behaviour specifications are detailed.

Note: The static analysis warning about word repetition on line 135 is a false positive—"Searchbox" appears at the end of one step and the beginning of the next in a numbered list.

components/ui/popover.tsx (1)

1-48: LGTM! Standard shadcn/ui wrapper pattern.

The Popover component correctly wraps Radix UI primitives with consistent data-slot attributes and prop forwarding. The "use client" directive is appropriate for interactive components, and imports follow the @/ alias convention.

Based on learnings, the long className string on line 33 follows upstream shadcn/ui conventions and should remain as-is to preserve diffs.

components/ui/dialog.tsx (1)

1-143: LGTM! Complete Dialog primitive set.

The Dialog components provide a comprehensive set of composable primitives following shadcn/ui patterns. The optional showCloseButton prop on DialogContent is a good ergonomic addition, and the accessibility pattern (sr-only "Close" label) is correct.

Based on learnings, the long className strings follow upstream shadcn/ui conventions and should remain as-is to preserve diffs.

components/ui/command.tsx (2)

1-53: Command primitive wrappers follow correct patterns.

The Command component set correctly wraps cmdk primitives with consistent data-slot attributes. The CommandDialog composition using Dialog components from @/components/ui/dialog demonstrates good reusability. The sr-only header pattern maintains accessibility whilst hiding the title visually.

Based on learnings, the long className strings follow upstream shadcn/ui conventions.

Also applies to: 55-183


54-54: Fix typo in className selector.

The className string contains **:data-[slot=command-input-wrapper]:h-12 which appears to be a typo. The **: prefix is inconsistent with the [&_...] pattern used throughout the rest of the selector string and is invalid CSS syntax.

🔎 Proposed fix
-        <Command className="[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5">
+        <Command className="[&_[cmdk-group-heading]]:text-muted-foreground [&_[data-slot=command-input-wrapper]]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5">
⛔ Skipped due to learnings
Learnt from: michellepace
Repo: michellepace/devflow PR: 24
File: components/ui/badge.tsx:7-26
Timestamp: 2026-01-01T17:53:46.364Z
Learning: Files generated by `npx shadcnlatest add <component>` in components/ui/ should not be refactored for style or readability (e.g., splitting long className strings). The project prioritizes staying aligned with upstream shadcn/ui conventions to simplify future diff comparisons and component updates.
app/globals.css (1)

71-71: LGTM! Intentional layout variable update.

The increase in --top-bar-height from 4rem to 5rem aligns with the PR objectives for UI refinements and topbar height adjustments.

components/navigation/mobile-topbar.tsx (2)

6-6: LGTM! Breakpoint shift correctly implemented.

The change from sm:hidden to md:hidden correctly implements the PR objective to shift the mobile/desktop breakpoint from 640px to 768px, now treating the 640–767px range as mobile/tablet.


10-10: LGTM! Logo size increase aligns with UI refinements.

The increase from size-7 to size-8 enlarges the mobile logo appropriately as part of the broader mobile navigation visual refinements.

components/navigation/mobile-navlink.tsx (1)

35-35: LGTM! Padding reduction supports narrower mobile drawer.

The reduction from px-3 to px-2 appropriately tightens horizontal spacing, supporting the narrower mobile drawer width (280px) introduced in this PR.

app/(app)/layout.tsx (1)

24-24: LGTM! Enhanced responsive padding strategy.

The updated padding sequence (px-4 md:px-8 lg:px-10 xl:px-14) provides finer breakpoint control and aligns with the desktop topbar padding, creating a harmonious responsive layout progression.

components/navigation/nav-links.constants.ts (1)

17-18: Verify the label grammar.

The route change from /ask-question to /questions/ask correctly implements the URL restructuring objective. However, the label change from "Ask a question" to "Ask Question" drops the article "a". Whilst more concise, "Ask a Question" would be more grammatically complete.

Please confirm whether the abbreviated form is intentional for UI brevity.

components/navigation/desktop-topbar.tsx (4)

2-2: LGTM! Search component migration.

The import change from GlobalSearch to Searchbox correctly implements the search infrastructure update described in the PR objectives.


7-7: LGTM! Breakpoint shift maintains topbar continuity.

The change from sm:flex to md:flex correctly implements the breakpoint shift and ensures seamless coordination with the mobile topbar's md:hidden class, preventing overlap or gaps.


9-9: LGTM! Padding alignment with main content.

The updated padding sequence (md:px-8 lg:px-10 xl:px-14) now precisely matches the main content container padding in app/(app)/layout.tsx, ensuring visual alignment across the layout.


11-11: LGTM! Searchbox component usage.

The component usage correctly reflects the import change and implements the new search infrastructure.

components/navigation/mobile-nav.tsx (5)

29-29: Drawer width reduction is intentional and aligns with padding adjustment.

The mobile navigation width has been narrowed from 320px to 280px as part of the UI refinements. This change works well with the reduced horizontal padding (px-4) applied to the SheetContent at line 62.


38-47: Breakpoint shift is consistent with PR objectives.

The custom overlay button now hides at md (768px) instead of sm (640px), aligning with the mobile/desktop breakpoint shift. The custom overlay implementation remains necessary to support Clerk popup interactions whilst modal={false} is set.


49-57: Breakpoint shift and icon size increase improve mobile usability.

The trigger button visibility now shifts at md (768px) instead of sm (640px), consistent with the PR's breakpoint strategy. The icon size increase from size-5 to size-7 (20px → 28px) makes the menu toggle more touch-friendly on mobile devices.


59-64: Padding adjustment complements the narrower drawer width.

The horizontal padding reduction from p-6 (1.5rem) to px-4 py-6 (1rem horizontal, 1.5rem vertical) works well with the drawer width decrease. This maintains comfortable spacing whilst maximising usable area in the narrower 280px drawer.


68-72: Logo height increase subtly improves brand presence.

The logo height increases from h-7 to h-8 (28px → 32px), a modest enhancement that improves visibility in the mobile navigation drawer. The ThemedFullLogo component maintains the correct aspect ratio automatically via its internal styling.

x_docs/my_notes/votes_scores.md (1)

1-30: LGTM — clear documentation with correct content.

The documentation effectively distinguishes between individual vote counts and net score, provides concrete examples, and outlines the data model appropriately for DevFlow. The TypeScript interfaces are well-structured and the hierarchy diagram clarifies independence of question and answer scores. British English conventions are followed throughout.

Also applies to: 33-66

@michellepace michellepace merged commit 0cf3324 into main Jan 5, 2026
7 checks passed
@michellepace michellepace deleted the chore/search-prep-and-breakpoint-shift branch January 5, 2026 22:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant